Testing frameworks হল সফটওয়্যার ডেভেলপমেন্টে ব্যবহৃত টুলস যা কোডের কার্যকারিতা যাচাই করতে সহায়ক। এই টুলগুলির মাধ্যমে, আপনি আপনার কোডের বিভিন্ন অংশের সঠিকতা পরীক্ষা করতে পারেন, যেমন ইউনিট টেস্টিং, ইন্টিগ্রেশন টেস্টিং, এবং এন্ড-টু-এন্ড টেস্টিং। Jest, Mocha, এবং Jasmine তিনটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা JavaScript কোডের জন্য ব্যাপকভাবে ব্যবহৃত হয়।
১. Jest
Jest একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Facebook দ্বারা তৈরি করা হয়েছে এবং এটি React এর জন্য একটি স্ট্যান্ডার্ড টেস্টিং টুল। Jest সহজ, শক্তিশালী এবং খুব দ্রুত, এবং এটি ব্যবহারে খুবই সুবিধাজনক। এটি বক্স আউট অফ দ্য বক্স টেস্ট রানিং, স্পাইং, মকিং, এবং অ্যাসারশন সমর্থন করে।
Jest এর বৈশিষ্ট্য:
- ডিফল্টভাবে সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস টেস্টিং সমর্থন করে।
- অটোমেটিক মকিং এবং স্পাইং: মকিং, স্পাইং, এবং সিমুলেটেড ফাংশনালিটি অফার করে।
- ইন্টিগ্রেটেড কভারেজ রিপোর্ট: কোড কভারেজের রিপোর্ট পাওয়া যায় টেস্টের অংশ হিসেবে।
- জ্ঞানগতভাবে সহজ: সহজ সিনট্যাক্স, ডিফল্ট কনফিগারেশন এবং কমপ্লেক্স টেস্টিংয়ের জন্য শক্তিশালী ফিচার।
উদাহরণ:
// sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
// sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
২. Mocha
Mocha একটি খুব জনপ্রিয় JavaScript টেস্টিং ফ্রেমওয়ার্ক যা টেস্ট রান, টেস্ট ড্রাইভিং, অ্যাসারশন এবং স্পাই/স্টাব সমর্থন করে। Mocha সাধারণত Chai (অ্যাসারশন লাইব্রেরি) এবং Sinon (স্পাই এবং মকিং টুল) এর সাথে ব্যবহৃত হয়।
Mocha এর বৈশিষ্ট্য:
- ফ্লেক্সিবল এবং কাস্টমাইজযোগ্য: Mocha ব্যবহারকারীদের কাস্টম টেস্ট রানারের এবং টেস্ট স্ট্রাকচারের জন্য সুযোগ প্রদান করে।
- বিভিন্ন অ্যাসারশন লাইব্রেরি সমর্থন: Chai, Expect, Assert এর মতো অ্যাসারশন লাইব্রেরি ব্যবহার করা যায়।
- ব্রাউজার এবং Node.js-এ সমর্থন: Mocha ব্রাউজার এবং Node.js উভয় পরিবেশে কাজ করে।
- ইন্টিগ্রেশন টেস্টিং এবং অ্যাসিঙ্ক্রোনাস টেস্টিং সমর্থন: Mocha অ্যাসিঙ্ক্রোনাস ফাংশন এবং টেস্টিংয়ে খুব ভালো।
উদাহরণ:
const assert = require('chai').assert;
const sum = require('./sum');
describe('sum', function() {
it('should add 1 and 2 to make 3', function() {
assert.equal(sum(1, 2), 3);
});
});
৩. Jasmine
Jasmine একটি Behavior-Driven Development (BDD) টেস্টিং ফ্রেমওয়ার্ক যা মূলত এন্ড-টু-এন্ড টেস্টিং এর জন্য ব্যবহৃত হয়। এটি জাভাস্ক্রিপ্টের জন্য খুবই শক্তিশালী এবং সহজে ব্যবহারযোগ্য টেস্টিং ফ্রেমওয়ার্ক। Jasmine সাধারণত Karma (টেস্ট রানার) এর সাথে ব্যবহৃত হয়।
Jasmine এর বৈশিষ্ট্য:
- BDD স্টাইল টেস্টিং: Jasmine Behavior-Driven Development স্টাইলে কাজ করে, যেখানে টেস্টের ভাষা ইংরেজি বাক্যে লেখা হয়, যেমন "it should do something".
- স্পাই, মক, এবং স্টাব সমর্থন: Jasmine স্পাই, মক এবং স্টাব ফাংশনালিটি প্রদান করে।
- কনফিগারেশন এবং সেটআপ সহজ: Jasmine খুবই সহজে কনফিগার এবং সেটআপ করা যায়।
- ব্যবহারকারী-বান্ধব API: Jasmine এর API অনেকটাই স্বাভাবিক এবং পাঠযোগ্য।
উদাহরণ:
describe("sum", function() {
it("should add 1 and 2 to make 3", function() {
var result = sum(1, 2);
expect(result).toBe(3);
});
});
Jest, Mocha, এবং Jasmine এর তুলনা
| ফিচার | Jest | Mocha | Jasmine |
|---|---|---|---|
| টেস্ট টাইপ | ইউনিট, ইন্টিগ্রেশন, এন্ড-টু-এন্ড | ইউনিট, ইন্টিগ্রেশন, এন্ড-টু-এন্ড | ইউনিট, ইন্টিগ্রেশন, এন্ড-টু-এন্ড |
| বিল্ট-ইন অ্যাসারশন লাইব্রেরি | হ্যাঁ | না (Chai বা Assert ব্যবহার করা হয়) | হ্যাঁ |
| কভারেজ রিপোর্ট | হ্যাঁ | না (কভারেজ রিপোর্টের জন্য এক্সটার্নাল টুলস প্রয়োজন) | না |
| অ্যাসিঙ্ক্রোনাস টেস্টিং | সমর্থন | সমর্থন | সমর্থন |
| সহজ কনফিগারেশন | খুবই সহজ | ফ্লেক্সিবল, তবে কনফিগারেশন বেশি প্রয়োজন | সহজ |
| স্পাই, মক এবং স্টাব | মকিং, স্পাইয়ের জন্য আলাদা টুলস প্রয়োজন | Sinon বা Chai ব্যবহার করা হয় | বিল্ট-ইন স্পাই, মক এবং স্টাব |
সারসংক্ষেপ
- Jest হলো একটি সহজ এবং শক্তিশালী টেস্টিং ফ্রেমওয়ার্ক, যা প্রধানত React অ্যাপ্লিকেশনের জন্য ব্যবহৃত হয়, তবে যেকোনো JavaScript প্রোজেক্টে এটি ব্যবহার করা যায়।
- Mocha একটি নমনীয় এবং কাস্টমাইজযোগ্য ফ্রেমওয়ার্ক যা ব্যাপকভাবে ব্যবহৃত হয়, বিশেষত Chai এবং Sinon এর সাথে।
- Jasmine হলো একটি BDD ভিত্তিক টেস্টিং ফ্রেমওয়ার্ক যা Karma এর সাথে ব্যবহৃত হয় এবং এটি স্পাই, মক এবং স্টাব ফিচার সহ আসে।
আপনার প্রকল্পের প্রয়োজন এবং টেস্টিং পদ্ধতির উপর ভিত্তি করে, আপনি যেকোনো একটিকে বেছে নিতে পারেন।
Read more